home *** CD-ROM | disk | FTP | other *** search
- BUFSIZE EQU 32768
- CODE SEGMENT
- ASSUME CS:CODE,DS:CODE
- ORG 100H
- START: CALL GETCHR
- JZ ERXIT
- START1: MOV CX,0
- MOV DI,OFFSET STR3+2
- MOV WORD PTR STR4,1
- LOOP3: CALL GETCHR
- JZ OKXIT
- CMP AL,13
- JZ ENDLIN
- STOSB
- INC CX
- MOV WORD PTR STR3,CX
- JMP LOOP3
- ERXIT: MOV AX,4C01H
- INT 21H
- OKXIT: CMP BYTE PTR DS:5DH,'-'
- JZ OKXIT1
- MOV CX,WORD PTR STR3
- OR CX,CX
- JZ NOT3A
- MOV DX,OFFSET STR3+2
- CALL PUTLIN
- NOT3A: MOV CX,2
- MOV DX,OFFSET STR4+2
- CALL PUTLIN
- OKXIT1: MOV AX,4C00H
- INT 21H
- ENDLIN: MOV WORD PTR STR3,CX
- CALL GETCHR
- JZ OKXIT
- MOV WORD PTR STR4,2
- CMP AL,10
- JZ BYPLF
- MOV WORD PTR STR4,1
- BYPLF: PUSH WORD PTR STR4
- CALL GETCHR
- JZ OKXIT
- POP WORD PTR STR4
- CMP BYTE PTR DS:5DH,'-'
- JNZ START1
- OR CX,CX
- JZ NOT3
- MOV DX,OFFSET STR3+2
- CALL PUTLIN
- NOT3: MOV CX,WORD PTR STR4
- MOV DX,OFFSET STR4+2
- CALL PUTLIN
- JMP START1
- GETCHR: CMP WORD PTR STR4,1
- JNZ NOPREV
- MOV AL,LASTCH
- MOV WORD PTR STR4,2
- JMP SHORT NOREAD
- NOPREV: PUSH CX
- MOV CX,BUFLEFT
- OR CX,CX
- JNZ RDCHR
- SUB BX,BX
- MOV CX,BUFSIZE
- MOV DX,OFFSET CHAR
- MOV AH,63
- INT 21H
- OR AX,AX
- POP CX
- JZ GETXIT
- MOV SI,OFFSET CHAR
- PUSH CX
- MOV CX,AX
- RDCHR: LODSB
- DEC CX
- MOV BUFLEFT,CX
- POP CX
- MOV LASTCH,AL
- NOREAD: CMP AL,26
- GETXIT: RET
- PUTLIN: MOV BX,1
- MOV AH,64
- INT 21H
- RET
- BUFLEFT DW 0
- LASTCH DB ?
- STR4 DW 2
- DB 13,10
- STR3 LABEL BYTE
- CHAR EQU STR3+512
- CODE ENDS
- END START
- 4
- INT 21H
- RET
- BUFLEFT DW 0
- LASTCH DB ?
- STR4 DW 2
- DB 13,10
- STR3 LABEL BYTE
- CHAR EQU STR3+